home *** CD-ROM | disk | FTP | other *** search
/ Info-Mac 4 / Info_Mac IV CD-ROM (Pacific HiTech Inc.)(August 1994).iso / Development / Source / tarsrc Folder / cmd.c < prev    next >
Text File  |  1992-11-04  |  1KB  |  81 lines

  1. /*
  2.  * Macintosh TAR
  3.  *
  4.  * Written by Craig Ruff
  5.  *
  6.  * Command file routines and variables.
  7.  */
  8.  
  9. #include "tar.h"
  10. #include <SegLoad.h>
  11.  
  12. int
  13. ReadStr255(short refNum, unsigned char *buf)
  14. {
  15.     OSErr        err;
  16.     int        count;
  17.     unsigned char    *cnt = buf;
  18.     unsigned char    *p = &buf[1];
  19.     
  20.     for (*cnt = 0; *cnt < 255; p++) {
  21.         count = 1;
  22.         if ((err = FSRead(refNum, &count, p)) != noErr) {
  23.             if (err == eofErr)
  24.                 break;
  25.                 
  26.             OSAlert("\pReadStr255", "\pFSRead", nil, err);
  27.             return(-1);
  28.         }
  29.         
  30.         (*cnt)++;
  31.         if (*p == '\n')
  32.             break;
  33.     }
  34.     
  35.     return(*cnt);
  36. }
  37.  
  38. void
  39. ProcessCmdFile(short vRefNum, short versNum, Str255 fName)
  40. {
  41. #pragma unused(versNum)
  42.     OSErr    err;
  43.     short    refNum;
  44.     Str255    buf;
  45.     char    *routine = "\pProcessCmdFile";
  46.     
  47.     if ((err = FSOpen(fName, vRefNum, &refNum)) != noErr) {
  48.         OSAlert(routine, "\pFSOpen", fName, err);
  49.         return;
  50.     }
  51.     
  52.     (void) WindInit();
  53.     while (ReadStr255(refNum, buf) > 0) {
  54.         WPrintf("%P", buf);
  55.     }
  56.     
  57.     WindEnd(true);
  58.     FSClose(refNum);
  59. }
  60.  
  61. Boolean
  62. CmdFile()
  63. {
  64.     short        message, count, i;
  65.     AppFile        theFile;
  66.  
  67.     CountAppFiles(&message, &count);
  68.     if (count == 0)
  69.         return(false);
  70.     
  71.     for (i = 1; i <= count; i++) {
  72.         GetAppFiles(i, &theFile);
  73.         if (theFile.fType == 'TEXT')
  74.             ProcessCmdFile(theFile.vRefNum, theFile.versNum, theFile.fName);
  75.         
  76.         ClrAppFiles(i);
  77.     }
  78.     
  79.     return(true);
  80. }    
  81.